package main;

import java.net.URL;
import java.util.Map;

import com.som.console.CfgEnum;
import com.som.console.ExcelProcException;
import com.som.console.PathEnum;
import com.som.service.ExcelDataServiceInf;
import com.som.service.FilePathProcInf;
import com.som.service.excel.data1.process.Data1ExcelPathReadImp;
import com.som.service.excel.data2.process.Data2ExcelPathReadImp;
import com.som.service.excel.data3.process.Data3ExcelPathReadImp;
import com.som.service.excel.data4.process.Data4FilePathReadImp;
import com.som.service.impl.ExcelData1ServiceImpl;
import com.som.service.impl.ExcelData2ServiceImpl;
import com.som.service.impl.ExcelData3ServiceImpl;
import com.som.service.impl.FileData4ServiceImpl;
import com.som.util.PropertiesUtils;

/**
 * 运行excel运行的入口
 * 
 * @author liujun
 * @date 2016年4月8日
 * @verion 0.0.1
 */
public class ExcelMain
{

	public String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile();

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{

		URL classResourceURL = ExcelMain.class.getClassLoader().getResource(".");

		// 得到根路径
		String basePath = classResourceURL.getPath() + "data";

		// 获得当前配制文件信息
		String mode = PropertiesUtils.getInstance().getValue(CfgEnum.SYSTEM_CONFIG_RUN_MODE.getCfgMsg());

		try
		{
			// 2.1 需求一：设备采集数据和资管系统数据比对
			if (CfgEnum.SYSTEM_CONFIG_RUN_MODE_DEVCOMNE.getCfgMsg().equals(mode))
			{
				FilePathProcInf data1FileProc = new Data1ExcelPathReadImp();
				Map<String, String> filePath = data1FileProc.procPath(basePath);

				// 进行处理
				ExcelDataServiceInf data1Service = new ExcelData1ServiceImpl();

				data1Service.excelDataProcess(filePath);
			}

			// 需求二：各系统的数据一致性核对
			else if (CfgEnum.SYSTEM_CONFIG_RUN_MODE_SYSCCONFORMANCE.getCfgMsg().equals(mode))
			{
				// 读取文件信息
				FilePathProcInf data2FileProc = new Data2ExcelPathReadImp();
				Map<String, String> filePath = data2FileProc.procPath(basePath);

				// 进行处理
				ExcelDataServiceInf data2Service = new ExcelData2ServiceImpl();
				data2Service.excelDataProcess(filePath);
			}
			// IP地址格式互相转化
			else if (CfgEnum.SYSTEM_CONFIG_RUN_MODE_IPCONV.getCfgMsg().equals(mode))
			{
				// 读取文件信息
				FilePathProcInf data3FileProc = new Data3ExcelPathReadImp();

				Map<String, String> filePathMap = data3FileProc.procPath(basePath);

				// 取得入输入类型信息
				filePathMap.put(PathEnum.DATA3_INPUT_FILE_TYPE.getPathFlag(), PropertiesUtils.getInstance().getValue(CfgEnum.SYSTEM_DATA3_INPUT_KEY.getCfgMsg()));
				// 取得输出的文件类型信息
				filePathMap.put(PathEnum.DATA3_OUTPUT_FILE_TYPE.getPathFlag(), PropertiesUtils.getInstance().getValue(CfgEnum.SYSTEM_DATA3_OUTPUT_KEY.getCfgMsg()));

				// 进行处理
				ExcelDataServiceInf data3Service = new ExcelData3ServiceImpl();
				data3Service.excelDataProcess(filePathMap);
			}

			// 全省的IP中挑出苏州的IP
			else if (CfgEnum.SYSTEM_CONFIG_RUN_MODE_STATETOSZ.getCfgMsg().equals(mode))
			{
				// 读取文件信息
				FilePathProcInf data4FileProc = new Data4FilePathReadImp();

				Map<String, String> filePathMap = data4FileProc.procPath(basePath);

				// 进行处理
				ExcelDataServiceInf data3Service = new FileData4ServiceImpl();
				data3Service.excelDataProcess(filePathMap);
			}
		} catch (ExcelProcException e)
		{
			e.printStackTrace();
		}

	}

}
